home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / timer1.arc / TIMER1.C next >
C/C++ Source or Header  |  1986-09-13  |  2KB  |  62 lines

  1. /* Simple timer routine.  Useful for timing the length of a program
  2.    execution  */
  3.  
  4. #include "dos.h"      /* dos interrupt routines */
  5. union REGS *inreg,*outreg; /* these are required for the intdos function */
  6.  
  7. long _starttm; /* global for start time */
  8. long _stoptm;  /* global for stopp time */
  9. long gettm();  /* returns time of day in seconds */
  10.  
  11. /* This is a simple example of use of the timer.   The start time is
  12.    set, then the program waits for a key press, at which time it calls
  13.    the stop time routine and prints the total time     */
  14.  
  15. main()
  16.  {
  17.   starttm();
  18.   printf("timer started - press any key to stop\n");
  19.   wait_key();  /* wait for a key press */
  20.   printf("total time = %d sec\n",stoptm());
  21.  }
  22.  
  23.  
  24. /* Set the start time */
  25. starttm()
  26.  {
  27.   _starttm = gettm(); /* sets global variable */
  28.  }
  29.  
  30. /* Get the stop time */
  31. int stoptm()
  32.  {
  33.   int time;
  34.   _stoptm = gettm();
  35.   time = (int) (_stoptm - _starttm); /* calculate time in seconds */
  36.   return(time);                      /* return time as integer */
  37.  }
  38.  
  39. /* Returns long integer with time of day in seconds  */
  40.  
  41. long gettm()
  42.   {
  43.   int hour,minute,second,hund;
  44.   long time;
  45.   inreg->h.ah=0x2c;         /* set get time interrupt */
  46.   intdos(inreg,outreg); /* get time */
  47.   hour = outreg->h.ch;      /* read hour */
  48.   minute = outreg->h.cl;    /* read minute */
  49.   second = outreg->h.dh;    /* read seconds */
  50.   hund = outreg ->h.dl;     /* read hundreds */
  51.  
  52.   time = hour*3600 + minute*60 + second ; /* time in seconds */
  53.   return(time);
  54.  }
  55. wait_key()
  56. /* waits for key to be pressed */
  57.  {
  58.   inreg->h.ah = 0;   /* set register to get key */
  59.   int86(0x16,inreg,outreg); /* do interrupt */
  60.  }
  61.  
  62.